home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / misc / gnuplot-3.7src.lha / gnuplot-3.7src / gnuplot-3.7.lha / gnuplot-3.7 / stdfn.h < prev    next >
C/C++ Source or Header  |  1998-12-04  |  7KB  |  312 lines

  1. /*
  2.  * $Id: stdfn.h,v 1.23 1998/06/18 14:55:18 ddenholm Exp $
  3.  *
  4.  */
  5.  
  6. /* GNUPLOT - stdfn.h */
  7.  
  8. /*[
  9.  * Copyright 1986 - 1993, 1998   Thomas Williams, Colin Kelley
  10.  *
  11.  * Permission to use, copy, and distribute this software and its
  12.  * documentation for any purpose with or without fee is hereby granted,
  13.  * provided that the above copyright notice appear in all copies and
  14.  * that both that copyright notice and this permission notice appear
  15.  * in supporting documentation.
  16.  *
  17.  * Permission to modify the software is granted, but not the right to
  18.  * distribute the complete modified source code.  Modifications are to
  19.  * be distributed as patches to the released version.  Permission to
  20.  * distribute binaries produced by compiling modified sources is granted,
  21.  * provided you
  22.  *   1. distribute the corresponding source modifications from the
  23.  *    released version in the form of a patch file along with the binaries,
  24.  *   2. add special version identification to distinguish your version
  25.  *    in addition to the base release version number,
  26.  *   3. provide your name and address as the primary contact for the
  27.  *    support of your modified version, and
  28.  *   4. retain our contact information in regard to use of the base
  29.  *    software.
  30.  * Permission to distribute the released version of the source code along
  31.  * with corresponding source modifications in the form of a patch file is
  32.  * granted with same provisions 2 through 4 for binary distributions.
  33.  *
  34.  * This software is provided "as is" without express or implied warranty
  35.  * to the extent permitted by applicable law.
  36. ]*/
  37.  
  38. /* get prototypes or declarations for string and stdlib functions and deal
  39.    with missing functions like strchr. */
  40.  
  41. /* we will assume the ANSI/Posix/whatever situation as default.
  42.    the header file is called string.h and the index functions are called
  43.    strchr, strrchr. Exceptions have to be listed explicitly */
  44.  
  45. #ifndef STDFN_H
  46. #define STDFN_H
  47.  
  48. #include <ctype.h>
  49. #include <stdio.h>
  50.  
  51. #include "syscfg.h"
  52.  
  53. #ifndef NO_STRING_H
  54. # include <string.h>
  55. #else
  56. # include <strings.h>
  57. #endif
  58.  
  59. #ifdef HAVE_BCOPY
  60. # ifdef NO_MEMCPY
  61. #  define memcpy(d,s,n) bcopy((s),(d),(n))
  62. # endif
  63. # ifdef NO_MEMMOVE
  64. #  define memmove(d,s,n) bcopy((s),(d),(n))
  65. # endif
  66. #endif /* HAVE_BCOPY */
  67.  
  68. #ifdef NO_STRCHR
  69. # ifdef strchr
  70. #  undef strchr
  71. # endif
  72. #ifdef HAVE_INDEX
  73. # define strchr index
  74. #endif
  75. # ifdef strrchr
  76. #  undef strrchr
  77. # endif
  78. # ifdef HAVE_RINDEX
  79. #  define strrchr rindex
  80. # endif
  81. #endif
  82.  
  83. #ifdef NO_STDLIB_H
  84. # ifdef HAVE_MALLOC_H
  85. #  include <malloc.h>
  86. # else
  87. void free();
  88. char *malloc();
  89. char *realloc();
  90. # endif /* HAVE_MALLOC_H */
  91. char *getenv();
  92. int system();
  93. double atof();
  94. int atoi();
  95. long atol();
  96. double strtod();
  97. #else /* !NO_STDLIB_H */
  98. # include <stdlib.h>
  99. # ifndef VMS
  100. #  ifndef EXIT_FAILURE
  101. #   define EXIT_FAILURE (1)
  102. #  endif
  103. #  ifndef EXIT_SUCCESS
  104. #   define EXIT_SUCCESS (0)
  105. #  endif
  106. # else /* VMS */
  107. #  ifdef VAXC            /* replacement values suppress some messages */
  108. #   ifdef  EXIT_FAILURE
  109. #    undef EXIT_FAILURE
  110. #   endif
  111. #   ifdef  EXIT_SUCCESS
  112. #    undef EXIT_SUCCESS
  113. #   endif
  114. #  endif /* VAXC */
  115. #  ifndef  EXIT_FAILURE
  116. #   define EXIT_FAILURE  0x10000002
  117. #  endif
  118. #  ifndef  EXIT_SUCCESS
  119. #   define EXIT_SUCCESS  1
  120. #  endif
  121. # endif /* VMS */
  122. #endif /* !NO_STDLIB_H */
  123.  
  124. #ifdef HAVE_UNISTD_H
  125. # include <unistd.h>
  126. #else
  127. # ifdef HAVE_LIBC_H /* NeXT uses libc instead of unistd */
  128. #  include <libc.h>
  129. # endif
  130. #endif /* HAVE_UNISTD_H */
  131.  
  132. #ifndef NO_ERRNO_H
  133. # include <errno.h>
  134. #endif
  135. # ifdef EXTERN_ERRNO
  136. extern int errno;
  137. #endif
  138.  
  139. #ifndef NO_SYS_TYPES_H
  140. # include <sys/types.h>
  141. #endif
  142.  
  143. #ifdef HAVE_SYS_STAT_H
  144. # include <sys/stat.h>
  145.  
  146. /* This is all taken from GNU fileutils lib/filemode.h */
  147.  
  148. #if !S_IRUSR
  149. # if S_IREAD
  150. #  define S_IRUSR S_IREAD
  151. # else
  152. #  define S_IRUSR 00400
  153. # endif
  154. #endif
  155.  
  156. #if !S_IWUSR
  157. # if S_IWRITE
  158. #  define S_IWUSR S_IWRITE
  159. # else
  160. #  define S_IWUSR 00200
  161. # endif
  162. #endif
  163.  
  164. #if !S_IXUSR
  165. # if S_IEXEC
  166. #  define S_IXUSR S_IEXEC
  167. # else
  168. #  define S_IXUSR 00100
  169. # endif
  170. #endif
  171.  
  172. #ifdef STAT_MACROS_BROKEN
  173. # undef S_ISBLK
  174. # undef S_ISCHR
  175. # undef S_ISDIR
  176. # undef S_ISFIFO
  177. # undef S_ISLNK
  178. # undef S_ISMPB
  179. # undef S_ISMPC
  180. # undef S_ISNWK
  181. # undef S_ISREG
  182. # undef S_ISSOCK
  183. #endif /* STAT_MACROS_BROKEN.  */
  184.  
  185. #if !defined(S_ISBLK) && defined(S_IFBLK)
  186. # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
  187. #endif
  188. #if !defined(S_ISCHR) && defined(S_IFCHR)
  189. # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
  190. #endif
  191. #if !defined(S_ISDIR) && defined(S_IFDIR)
  192. # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
  193. #endif
  194. #if !defined(S_ISREG) && defined(S_IFREG)
  195. # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
  196. #endif
  197. #if !defined(S_ISFIFO) && defined(S_IFIFO)
  198. # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
  199. #endif
  200. #if !defined(S_ISLNK) && defined(S_IFLNK)
  201. # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
  202. #endif
  203. #if !defined(S_ISSOCK) && defined(S_IFSOCK)
  204. # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
  205. #endif
  206. #if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
  207. # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
  208. # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
  209. #endif
  210. #if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
  211. # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
  212. #endif
  213.  
  214. #endif /* HAVE_SYS_STAT_H */
  215.  
  216. #ifndef NO_LIMITS_H
  217. # include <limits.h>
  218. #else
  219. # ifdef HAVE_VALUES_H
  220. #  include <values.h>
  221. # endif /* HAVE_VALUES_H */
  222. #endif /* !NO_LIMITS_H */
  223.  
  224. #ifdef NO_TIME_H
  225. # ifndef time_t /* should be #defined by config.h, then... */
  226. #  define time_t long
  227. # endif
  228. #else
  229. # include <time.h> /* ctime etc, should also define time_t and struct tm */
  230. #endif
  231.  
  232. #if defined(PIPES) && (defined(VMS) || (defined(OSK) && defined(_ANSI_EXT))) || defined(PIPES) && defined(AMIGA_SC_6_1)
  233. FILE *popen __PROTO((char *, char *));
  234. int pclose __PROTO((FILE *));
  235. #endif
  236.  
  237. #ifndef NO_FLOAT_H
  238. # include <float.h>
  239. #endif
  240.  
  241. #ifndef NO_LOCALE_H
  242. # include <locale.h>
  243. #endif
  244.  
  245. #ifndef NO_MATH_H
  246. # include <math.h>
  247. #endif
  248.  
  249. #ifndef HAVE_STRNICMP
  250. # ifdef HAVE_STRNCASECMP
  251. #  define strnicmp strncasecmp
  252. # else
  253. int strnicmp __PROTO((char *, char *, int));
  254. # endif
  255. #endif
  256.  
  257. /* Argument types for select() */
  258. #ifdef SELECT_TYPE_ARG1
  259. # define gp_nfds_t SELECT_TYPE_ARG1
  260. #else
  261. # define gp_nfds_t int
  262. #endif /* 1 */
  263. #ifdef SELECT_TYPE_ARG234
  264. # define gp_fd_set_p SELECT_TYPE_ARG234
  265. #else
  266. # ifndef __EMX__
  267. #  define gp_fd_set_p (int *)
  268. # else
  269. #  define gp_fd_set_p (fd_set *)
  270. # endif
  271. #endif /* 234 */
  272. #ifdef SELECT_TYPE_ARG5
  273. # define gp_timeval_p SELECT_TYPE_ARG5
  274. #else
  275. # define gp_timeval_p (struct timeval *)
  276. #endif /* 5 */
  277.  
  278. #ifndef GP_GETCWD
  279. # if defined(HAVE_GETCWD)
  280. #  define GP_GETCWD(path,len) getcwd (path, len)
  281. # else
  282. #  define GP_GETCWD(path,len) getwd (path)
  283. # endif
  284. #endif
  285.  
  286. #ifndef GP_SLEEP
  287. # ifdef __ZTC__
  288. #  define GP_SLEEP(delay) usleep ((unsigned long) (delay))
  289. # else
  290. #  define GP_SLEEP(delay) sleep ((unsigned int) (delay))
  291. # endif
  292. #endif
  293.  
  294. /* Misc. defines */
  295.  
  296. /* Null character */
  297. #define NUL ('\0')
  298.  
  299. /* Definitions for debugging */
  300. /* #define NDEBUG */
  301. #include <assert.h>
  302.  
  303. #ifdef DEBUG
  304. # define DEBUG_WHERE do { fprintf(stderr,"%s:%d ",__FILE__,__LINE__); } while (0)
  305. # define FPRINTF(a) do { DEBUG_WHERE; fprintf a; } while (0)
  306. #else
  307. # define DEBUG_WHERE     /* nought */
  308. # define FPRINTF(a)      /* nought */
  309. #endif /* DEBUG */
  310.  
  311. #endif /* STDFN_H */
  312.